/*
 * Ext JS Library 2.1
 * Copyright(c) 2006-2008, Ext JS, LLC.
 * licensing@extjs.com
 * 
 * http://extjs.com/license
 */

Ext.app.SearchFieldForTree = Ext.extend(Ext.form.TwinTriggerField, {
    initComponent : function(){
        Ext.app.SearchFieldForTree.superclass.initComponent.call(this);
        this.on('specialkey', function(f, e){
            if(e.getKey() == e.ENTER){
                this.onTrigger2Click();
            }
        }, this);
        // 下面代码由 杨丘雄 添加 : 用来在搜索或结束搜索之前进行一些处理
        this.addEvents({
        	'beforesearch' : true,
        	'beforeclosesearch' : true,
        	'beforesearchconfirmok' : true,
        	'beforesearchconfirmcancel' : true,
        	'beforeclosesearchconfirmok' : true,
        	'beforeclosesearchconfirmcancel' : true
        });
        // 上面代码由 杨丘雄 添加
    },

    validationEvent:false,
    validateOnBlur:false,
    trigger1Class:'x-form-clear-trigger',
    trigger2Class:'x-form-search-trigger',
    hideTrigger1:true,
    width:380,
    hasSearch : false,
    paramName : 'query',
	async : false,

    onTrigger1Click : function(){
    	// 下面代码由 杨丘雄 添加 : 用来在结束搜索之前进行一些处理
    	var beforeflag = this.fireEvent('beforeclosesearch');
      	if(!beforeflag){
      		return false; 
      	}
      	// 上面代码由 杨丘雄 添加
      	
      	// 下面代码由 杨丘雄 修改，时间：20081013
      	
      	// 旧代码
        //this.closeSearch();
        // 旧代码
        
        // 新代码
        if((this.beforeCloseSearchConfirmText !== undefined)
			&&(this.beforeCloseSearchConfirmText !== "")){
			Ext.MessageBox.show({
				title : "操作提示",
				msg : this.beforeCloseSearchConfirmText,
				buttons : {ok:'确定',cancel:'取消'},
				scope : this,
				fn : function(buttonid, text){
					if(buttonid == "ok"){
						if (this.fireEvent("beforeclosesearchconfirmok", this) === true) {
							this.closeSearch();
						}
					}else{
						this.fireEvent("beforeclosesearchconfirmcancel", this);
					}
				}
			});
		}else{
			this.closeSearch();
		}
        // 新代码
        
        // 上面代码由 杨丘雄 修改，时间：20081013        
    },
    
    onTrigger2Click : function(){
    	// 下面代码由 杨丘雄 添加 : 用来在搜索之前进行一些处理
    	var beforeflag = this.fireEvent('beforesearch');
      	if(!beforeflag){
      		return false; 
      	}
      	// 上面代码由 杨丘雄 添加
      	
      	// 下面代码由 杨丘雄 修改，时间：20081013
      	
      	// 旧代码
		//var srch = this.el.dom.value;
		//if(!srch){
		//	tree.loader.dataUrl = treeLoader;
		// 	tree.loader.clearOnLoad = true;
		//    tree.loader.load(root,function(){root.expand(false,true);}); 
		//	searchBar.triggers[0].hide();
		//	searchBar.hasSearch = false;     
		//}else{
		//	tree.loader.dataUrl = searchUrl;
		//	tree.loader.baseParams = {searchstr:srch};
		//	tree.loader.clearOnLoad = true;
		//	tree.loader.load(root,function(){root.expand(true,true);});  
		//	searchBar.triggers[0].show();
		//	searchBar.hasSearch = true;     
		//}
		// 旧代码
		
		// 新代码
		if((this.beforeSearchConfirmText !== undefined)
			&&(this.beforeSearchConfirmText !== "")){
			Ext.MessageBox.show({
				title : "操作提示",
				msg : this.beforeSearchConfirmText,
				buttons : {ok:'确定',cancel:'取消'},
				scope : this,
				fn : function(buttonid, text){
					if(buttonid == "ok"){
						if (this.fireEvent("beforesearchconfirmok", this) === true) {
							var srch = this.el.dom.value;
							if(!srch){
								if((this.searchtree != undefiend)
									&&(this.searchtree != null)){
										
								}else{
									tree.loader.dataUrl = treeLoader;
								 	tree.loader.clearOnLoad = true;
								    tree.loader.load(root,function(){root.expand(false,true);});
								}
								searchBar.triggers[0].hide();
								searchBar.hasSearch = false;     
							}else{
							    tree.loader.dataUrl = searchUrl;
							    tree.loader.baseParams = {searchstr:srch};
							    tree.loader.clearOnLoad = true;
							    tree.loader.load(root,function(){root.expand(true,true);});  
								searchBar.triggers[0].show();
								searchBar.hasSearch = true;     
							}
						}
					}else{
						this.fireEvent("beforesearchconfirmcancel", this);
					}
				}
			});
		}else{
			var srch = this.el.dom.value;
			if(!srch){
				tree.loader.dataUrl = treeLoader;
			 	tree.loader.clearOnLoad = true;
			    tree.loader.load(root,function(){root.expand(false,true);}); 
				searchBar.triggers[0].hide();
				searchBar.hasSearch = false;     
			}else{
			    tree.loader.dataUrl = searchUrl;
			    tree.loader.baseParams = {searchstr:srch};
			    tree.loader.clearOnLoad = true;
			    tree.loader.load(root,function(){root.expand(true,true);});  
				searchBar.triggers[0].show();
				searchBar.hasSearch = true;     
			}
		}
		// 新代码
		
		// 上面代码由 杨丘雄 修改，时间：20081013
    },
    
    closeSearch : function(){
    	if(this.hasSearch){
        	this.el.dom.value = '';
            this.triggers[0].hide();
            this.hasSearch = false;
            tree.loader.dataUrl = treeLoader;
            tree.loader.clearOnLoad = true;
            tree.loader.load(root,function(){root.expand(false,true);});
        }
    },
    
    resetSearch : function(){
    	this.el.dom.value = '';
    	if(this.hasSearch){
            this.triggers[0].hide();
            this.hasSearch = false;
    	}
    }
    
    
});